home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / OpenTptPCISupport.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  3KB  |  106 lines

  1. /*
  2.     File:        OpenTptPCISupport.h
  3.  
  4.     Contains:    File to include everything you need to declare a module
  5.  
  6.     Copyright:    © 1993-1996 by Apple Computer, Inc., all rights reserved.
  7.  
  8.  
  9. */
  10.  
  11. #ifndef __OPENTPTPCISUPPORT__
  12. #define __OPENTPTPCISUPPORT__
  13.  
  14. #ifndef __OPENTPTCOMMON__
  15. #include <OpenTptCommon.h>
  16. #endif
  17. #ifndef __DEVICES__    
  18. #include <Devices.h>
  19. #endif
  20.  
  21.  
  22. /*******************************************************************************
  23. ** This is the cookie that is passed to your STREAM Module
  24. ********************************************************************************/
  25.  
  26. struct OTPCIInfo
  27. {
  28.     RegEntryID            fTheID;
  29.     void*                fConfigurationInfo;
  30.     size_t                fConfigurationLength;
  31. };
  32.  
  33. typedef struct OTPCIInfo OTPCIInfo;
  34.  
  35. /*******************************************************************************
  36. ** PCI Card support
  37. ********************************************************************************/
  38. /*
  39.  * All PCI card modules should have the following bits set in their
  40.  * install_info structure:
  41.  * kOTModIsDriver.
  42.  * 
  43.  * They should NEVER have the kOTModPushAlways or the kOTModIsModule
  44.  * flags set.
  45.  *
  46.  * The kOTModIsLowerMux bits should be set if the driver is a lower
  47.  * multiplexor, although Open Transport does nothing with the information
  48.  * today.
  49.  *
  50.  * The kOTModUpperIsDLPI bit should be set if the driver uses the DLPI message
  51.  * specification.  The kOTModUpperIsTPI bit should be set if the driver uses
  52.  * the TPI message specification.
  53.  */
  54.  
  55.  /*    -------------------------------------------------------------------------
  56.     Macro to put together the driverServices.service[x].serviceType field
  57.     
  58.     // xxxxxddd dddddddd ffffffff xxxxxxTD
  59.     //
  60.     // where "d" is the device type for Open Transport,
  61.     // the lower two bits are whether the driver is TPI or DLPI,
  62.     // and the "f" bits are the framing option flags.
  63.     // and all other bits should be 0
  64.     ------------------------------------------------------------------------- */
  65.  
  66. #define OTPCIServiceType(devType, framingFlags, isTPI, isDLPI)    \
  67.     ((devType << 16) | (((framingFlags) & 0xff) << 8) | (isTPI ? 2 : 0) | (isDLPI ? 1 : 0 ))
  68.  
  69.  /*    -------------------------------------------------------------------------
  70.     Typedef for the ValidateHardware function.  This function will be
  71.     called only once, at system boot time, before installing your driver
  72.     into the Open Transport module registry.
  73.     The param pointer will is a RegEntryIDPtr - don't be changing the
  74.     values there!
  75.     ------------------------------------------------------------------------- */
  76.  
  77. typedef OTResult    (* _CDECL ValidateHardwareProcPtr)(OTPCIInfo* param);
  78.  
  79. enum
  80. {
  81.     kOTPCINoErrorStayLoaded        = 1
  82. };
  83.  
  84. /*    -------------------------------------------------------------------------
  85.     Some descriptors we use - these should eventually show up
  86.     in system header files somewhere.
  87.     ------------------------------------------------------------------------- */
  88.  
  89. #define kDescriptorProperty        "driver-descriptor"
  90. #define kDriverProperty            "driver,AAPL,MacOS,PowerPC"
  91. #define kDriverPtrProperty        "driver-ptr"
  92. #define kSlotProperty            "AAPL,slot-name"
  93.  
  94. /*    -------------------------------------------------------------------------
  95.     Maximum # of services support by Open Transport.  If your module
  96.     exports more than this # of services, Open Transport will not be
  97.     able to use the module.
  98.     ------------------------------------------------------------------------- */
  99.  
  100. enum
  101. {
  102.     kMaxServices                = 20
  103. };
  104.  
  105. #endif    /* __OPENTPTPCISUPPORT__ */
  106.